home *** CD-ROM | disk | FTP | other *** search
- property cursorGod, SlidThing, objectRect, sliderMap, grabberSprite, firstGrabber, lastGrabber, grabberOnMember, grabberOffMember, mouseIsDown, clickedOnGrabber, objectHidden
-
- on reDraw me, xInt
- moveSlider(me, fromSlidThing(me, xInt))
- end
-
- on mouseEvent me, xEvent, xLoc
- case xEvent of
- #mouseDown:
- if rollOver(grabberSprite) then
- set clickedOnGrabber to 1
- catchEvent(SlidThing, #grabberClicked)
- end if
- set mouseIsDown to 1
- #mouseDrag:
- set mouseIsDown to 1
- #mouseUp:
- set mouseIsDown to 0
- if clickedOnGrabber then
- set clickedOnGrabber to 0
- catchEvent(SlidThing, #grabberReleased)
- end if
- #mouseGone:
- set mouseIsDown to 0
- if clickedOnGrabber then
- set clickedOnGrabber to 0
- catchEvent(SlidThing, #grabberReleased)
- end if
- end case
- end
-
- on areYouThere me, xLoc
- if objectHidden then
- return 0
- end if
- shouldIMove(me, xLoc)
- return inside(xLoc, objectRect)
- end
-
- on turnON me
- set the member of sprite grabberSprite to grabberOnMember
- end
-
- on turnOff me
- set the member of sprite grabberSprite to grabberOffMember
- end
-
- on hide me
- set the visible of sprite grabberSprite to 0
- set objectHidden to 1
- end
-
- on reveal me
- set the visible of sprite grabberSprite to 1
- set objectHidden to 0
- end
-
- on new me, xRect, xSprite, xOnMember, xOffMember
- set objectRect to xRect
- set grabberSprite to xSprite
- set grabberOnMember to xOnMember
- set grabberOffMember to xOffMember
- set grabberRect to the rect of sprite grabberSprite
- puppetSprite(grabberSprite, 1)
- return me
- end
-
- on linkUp me, xSlidThing
- set SlidThing to xSlidThing
- makeMap(me)
- updateSlider(SlidThing)
- end
-
- on subscribe me, xCursor
- set cursorGod to xCursor
- subscribe(cursorGod, me)
- end
-
- on shouldIMove me, xLoc
- if mouseIsDown then
- if rollOver(grabberSprite) then
- if not clickedOnGrabber then
- set clickedOnGrabber to 1
- catchEvent(SlidThing, #grabberClicked)
- end if
- end if
- whereShouldIGo(me, xLoc)
- end if
- end
-
- on whereShouldIGo me, xLoc
- set thisV to the locV of xLoc
- if thisV < firstGrabber then
- set thisV to firstGrabber
- else
- if thisV > lastGrabber then
- set thisV to lastGrabber
- end if
- end if
- toSlidThing(me, thisV)
- end
-
- on moveSlider me, xInt
- set the locV of sprite grabberSprite to xInt
- updateStage()
- end
-
- on makeMap me
- set slidValues to getMapInfo(SlidThing)
- set slidFirst to getAt(slidValues, 1)
- set slidLast to getAt(slidValues, 2)
- initGrabberPoints(me)
- set slidSize to slidLast - slidFirst
- set grabberSize to lastGrabber - firstGrabber
- set mapRatio to float(slidSize) / grabberSize
- set sliderMap to [:]
- repeat with i = 0 to grabberSize
- set thisSlid to integer((i * mapRatio) + slidFirst)
- set thisGrabber to i + firstGrabber
- addProp(sliderMap, thisSlid, thisGrabber)
- end repeat
- sort(sliderMap)
- end
-
- on fromSlidThing me, xInt
- return getAt(sliderMap, findPosNear(sliderMap, xInt))
- end
-
- on toSlidThing me, xInt
- if clickedOnGrabber then
- hardSlide(SlidThing, getOne(sliderMap, xInt))
- else
- softSlide(SlidThing, getOne(sliderMap, xInt))
- end if
- end
-
- on initGrabberPoints me
- set grabberMember to the member of sprite grabberSprite
- set topOff to the locV of the regPoint of grabberMember
- set bottomOff to the height of sprite grabberSprite - topOff
- set firstGrabber to the top of objectRect + topOff
- set lastGrabber to the bottom of objectRect - bottomOff
- end
-
- on turnOnGrabber me
- nothing()
- end
-
- on turnOffGrabber me
- nothing()
- end
-